1. Field of the Invention
The present invention relates to a technique for improving the robustness and ease-of-use of Workflow Management Systems (WFMS) or a computer system with comparable functionality related to the creation of process instances from process models.
2. Description of the Related Art
A new area of technology with increasing importance is the domain of Workflow Management Systems (WFMS). WFMS support the modeling and execution of business processes. Business processes executed within a Workflow Management System environment control who will perform which piece of work from a network of pieces of work and which resources are exploited for this work. The individual pieces of work might be distributed across a multitude of different computer systems connected by some type of network.
The product “IBM MQSeries Workflow” (previously called IBM FlowMark) from International Business Machines Corp. (IBM) represents such a typical modern, sophisticated, and powerful workflow management system. IBM and MQSeries are trademarks of IBM. This product supports the modeling of business processes as a network of activities. This network of activities, the process model, is constructed as a directed, acyclic, weighted, colored graph. The nodes of the graph represent the activities which are performed. The edges of the graph, the control connectors, describe the potential sequence of execution of the activities. Definition of the process graph is via IBM MQSeries Workflow's Flow Definition Language (FDL) or via the built-in graphical editor.
The runtime component of the Workflow Management System uses the process model as a template to create process instances. Each process instance is associated with a set of values, typically called the context. The values are either supplied by the requester of the process instance via the appropriate request or retrieved by programs that implement the various activities. A particular important piece of information within the context is the process instance identifier that uniquely identifies a process instance. It should be noted that typically process instance identifiers are only unique within the set of process instances that are derived from a particular process model.
The creation of a process instance is initiated by an appropriate request being made to the Workflow Management System. Many options exist for requesters to initiate the request. Typical examples include putting a message into a queue, the sending of e-mail to a particular address, the issue of an HTTP post request to a URL, or the invocation of a function of the application programming interface offered by the workflow management system. The requester could be any type of program or human interacting with the system directly; it could even be the workflow management system itself. Typically, the request has data (also part of the context) associated with it that allows the requester to immediately provide information for the process instance context.
The process instance identifier is either generated by the Workflow Management System or supplied by the requester of the process instance. Both state of the art approaches have significant disadvantages.
When the Workflow Management System generates the process instance identifier, every request to create a process instance automatically results in the creation of a process instance. Thus, if the same request is carried out twice (or in general multiple times), two process instances are created. Carrying out the same request twice could happen as the result of many different situations. One such situation involves a user interacting with the Workflow Management System via a business application accidentally starting the same request twice. For instance, clerks unconsciously repeat a certain business process for a certain set of input data multiple times not knowing or not remembering that it has been processed already.
Another such situation involves a request sent via unreliable e-mail being carried out twice. This situation can happen, for example, if the computer system on which the Workflow Management System is running and to which the e-mail was sent crashes. In this case, it can happen that the e-mail has disappeared from one of the involved systems but not from the other. Thus, it is unclear whether the e-mail was processed or not. The usual solution to this situation is to reprocess the e-mail again, with the undesirable result that the same business process processes the same input data multiple times.
The other state of the art approach, in which the requester needs to generate the process instance identifier, also has significant disadvantages. In particular, one disadvantage is if there is more than one requester creating process instances, which in general is the typical situation. In this case, requesters must not use the same process instance identifier. Thus, requesters must share some common method to obtain unique process instance identifiers. This requires, for example, that any newly added requester implements the common method. In other words, the requests have to check against one another to exploit the same approach for creating process instance identifiers. This becomes very quickly an administrative and program development nightmare.
The weakness of the state of the art approaches with respect to this problem area becomes even more distinct if one thinks of typical Internet scenarios commonly summarized by terms like C2B (Consumer-to-Business) or B2B (Business-to-Consumer) business processes. In these scenarios, it is obvious that neither can the requester generate the process instance identifier nor can it be guaranteed that a request is issued only once and only once.
The objective of the invention is to eliminate the risk of creating duplicate process instances for business processes created and managed by a Workflow Management System.